The present invention relates generally to operation of processor-based systems, and more particularly to initialization and operation of client systems.
Initialization of processor-based systems generally involves using a basic input/output system (BIOS) which is stored in a read only memory (ROM), such as a flash ROM generally attached to a system motherboard, and is transferred to system memory during the boot process. BIOS refers to both basic bootstrap firmware as well as code to permit low-level operations in the system, such as an interface between an operating system (OS) and hardware components of the system. Once written and installed in a system, the BIOS is generally fixed, immutable and predefined. As a result, the BIOS must account for a large number of processor, chipset, memory, and peripheral devices, but this large number is necessarily finite. Accordingly, the BIOS is limited in the hardware which it may support by a number of factors, including the available memory or storage, the amount of effort put into compiling the BIOS, and the availability of components at the time the BIOS was developed.
Thus, as a system evolves, the BIOS remains basically static. This means that the BIOS may be unable to completely adapt to a variety of changed circumstances. In addition, the availability of improved and updated capabilities may not readily be incorporated into the BIOS. Furthermore, the BIOS has a size limitation due to the storage capacity of the flash ROM or other ROM device on which it is stored. Similarly, memory device failure is a concern, as the memory's content may be corrupted due to power interruption or other failure. While a BIOS update to a memory device may occur, such operation is time consuming and requires manual support. Although a BIOS can be updated at the OS level, for the new and/or updated settings and/or features to take effect, a restart is necessary to execute the new BIOS.
The convergence of communications and computing is driving high availability computing. Such high availability computing is needed in networks such as a telecommunications network. In such a network, it is common to find multiple BIOS revisions used on different boards (e.g., of network servers) of the same type. This is because BIOS updates are done manually, and if a BIOS of a given server does not have the update, the server will boot up with the old BIOS. A need thus exists to improve efficiency and configurability of BIOS.